// component/stars/stars.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    //分数名
    // title: {
    //   type: String,
    // },
    // 总星星数 总分
    starnum:{
      type: String,
    },
    // 输入的分数
    grade: {
      type: String,
      value: '0',
      observer(grade){
          this.renderstar(grade)
      }
    }, 
    // 是否只读
    disable: {
      type: String,
      value: 'false'
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    stararr:[],// 星星列表
  },

  lifetimes:{
    attached(){
      this.renderstar(this.data.grade)
    },
  },
  /**
   * 组件的方法列表
   */
  methods: {
    // 渲染星星 输入分数
    renderstar(grade) {
      let starnum = this.data.starnum
      let gradeno = grade/20
      // 显示初始星星 或者 显示对应分数的星星
      // let grade = this.data.grade

      // 取0.5分的倍数
      let score = Math.floor(gradeno * 2) / 2

      // 对1取余数 有的话就有半颗星
      let hashalf = score % 1 !== 0;

      // 整颗星的数量
      let full = Math.floor(score);

      let arr = []
      // 推入整颗星进入数组
      for (let i = 0; i < full; i++) {
        arr.push('full')
      }
      // 推入半星
      if (hashalf) {
        arr.push('half')
      }
      while (arr.length < starnum) {
        arr.push('noob')
      }
      this.setData({
        stararr: arr,
      })
    },

    // 点击打分
    hitstar(e){
      if(this.data.disable==='true'){
        return
      }
      let grade = (e.target.dataset.index + 1)*20
      this.renderstar(grade)

      //传递给父组件
      this.triggerEvent('sendgrade', grade)
    },

    
  }
})
